/**
 * 
 */
package mm.back.dao.impl;

import org.hibernate.HibernateException;
import org.hibernate.Query;

import genericos.dao.exeptions.PersistanceException;
import genericos.dao.exeptions.PersistenceServiceException;
import mm.back.dao.MMAbstractDAO;
import mm.back.dao.UsuariosDAO;
import mm.back.entity.Usuario;
import mm.exceptions.MMGenericException;

/**
 * @author PUSDERKIS
 *
 */
public class UsuariosDAOImpl extends MMAbstractDAO implements UsuariosDAO{


	/** 
	 * @see mm.back.dao.UsuariosDAO#getUsuario(java.lang.String)
	 */
	public Usuario getUsuario(String userName) {
		String query = "FROM Usuario u where u.userName = :userName";
		try{
			Query q = universalHibernateDAO.getHibernateSession().createQuery(query);
			
			q.setString("userName", userName);
			
			return (Usuario)q.uniqueResult();
		} catch (PersistenceServiceException e) {
			logger.error("Error al recuperar el usuario: "+userName,e);
			throw new MMGenericException("Error al recuperar el usuario", e);
		} catch (HibernateException e) {
			logger.error("Error al recuperar el usuario: "+userName,e);
			throw new MMGenericException("Error al recuperar el usuario", e);
		} catch (PersistanceException e) {
			logger.error("Error al recuperar el usuario: "+userName,e);
			throw new MMGenericException("Error al recuperar el usuario", e);
		}
		
	}

}
